package com.xiaozhou.leetCode.leetCode900;

import java.util.HashMap;
import java.util.Map;

public class LeetCode904 {

    public static int totalFruit(int[] fruits) {

        int left = 0, right = 0;
        int max = 0;
        Map<Integer, Integer> map = new HashMap<>();
        while (right < fruits.length) {
            map.put(fruits[right], map.getOrDefault(fruits[right], 0) + 1);
            if (map.size() <= 2){
                max = Math.max(max, right - left + 1);
            }else {
                while (map.size() > 2){
                    // 移除左边的元素 知道左边的篮子种类为空为止。原因就是右边新增了一个种类，所以必须把左边的那个种类的给去掉。
                    map.put(fruits[left], map.get(fruits[left]) - 1);
                    if (map.get(fruits[left]) == 0){
                        map.remove(fruits[left]);
                    }
                    left++;
                }
            }
            right++;
        }
        return max;
    }
}
